package database

import (
	"database/sql"
	"sen-golang-study/go_game_study/hero_story_go_server/game_server/internal/infrastructure/config"

	_ "github.com/go-sql-driver/mysql"
)

var mysqlDB *sql.DB

// Init 初始化数据库连接
func Init() {
	dbConfig := config.GetDatabaseConfig()

	var err error
	mysqlDB, err = sql.Open(dbConfig.Driver, dbConfig.DSN)
	if err != nil {
		panic(err)
	}

	// 设置连接池参数
	mysqlDB.SetMaxOpenConns(dbConfig.MaxOpenConns)
	mysqlDB.SetMaxIdleConns(dbConfig.MaxIdleConns)
	mysqlDB.SetConnMaxLifetime(dbConfig.ConnMaxLifetime)

	// 测试连接
	if err = mysqlDB.Ping(); err != nil {
		panic(err)
	}
}

// GetDB 获取数据库连接
func GetDB() *sql.DB {
	return mysqlDB
}

// Close 关闭数据库连接
func Close() error {
	if mysqlDB != nil {
		return mysqlDB.Close()
	}
	return nil
}